习题4.2单词替换
描述
输入一个字符串，以回车结束（字符串长度<=100）。该字符串由若干个单词组成，单词之间用一个空格隔开，
所有单词区分大小写。现需要将其中的某个单词替换成另一个单词，并输出替换之后的字符串。
输入描述：
每组数据输入包括3行，第1行是包含多个单词的字符串s，第2行是待替换的单词a(长度<=100)，
第3行是a将被替换的单词b(长度<=100)。s, a, b 最前面和最后面都没有空格。
输出描述：
每个测试数据输出只有 1 行， 将s中所有单词a替换成b之后的字符串。
示例1
输入：
You want someone to help you
You
I

输出：
I want someone to help you

//最初的这段只能通过65%用例，连续的单词不应该修改却修改了，如：YouYou 会改为II
#include<bits/stdc++.h>
using namespace std;
int main(){
    string str,str1,str2;
    while(getline(cin,str)){
        cin>>str1>>str2;
        while(str.find(str1)!=string::npos){
            str.insert(str.find(str1),str2);
            str.erase(str.find(str1),str1.size());
        }
        cout<<str<<endl;
    }
    return 0;
}

//字符串前+空格，搜索前后带空格的字符串
#include<bits/stdc++.h>
using namespace std;

int main(){
    string str,str1,str2;
    while(getline(cin,str)){
        cin>>str1>>str2;
        str.insert(0," ");
        int pos=str.find(" "+str1+" ");
        while(pos<str.size()){
            str.erase(pos,str1.size()+1);
            str.insert(pos," "+str2);
            pos=str.find(" "+str1+" ");
        }
        str.erase(0,1);//消除开头的空格
        cout<<str<<endl;
    }
    return 0;
}
